Grids are software constructs that act as part of a user process. Typically, grids are used as part of a graphical user interface (GUI) that enables the viewing of items like spreadsheets and databases. In the realm of databases, grids are useful because they give a user the ability to display large amounts of data on a display screen. The user may then add, delete, or modify the data in the grid. Generally, grids resemble tables that have unique column names and multiple rows, the intersection of which are termed cells which contain data related to the column and row. Often, several tables or several databases can be searched to extract specific query information. The result of such a query is very often a table itself with distinct columns and rows representing the results of the search. Grids may be used to display those results and organize the data for easy consumption by the user.
Specific program standards may be used to insert, modify, delete, search, and retrieve data from databases. One such program standard is known as the Structured Query Language (SQL). An example of a product implementing the standard is Microsoft® SQL-Server™. Typically, a SQL query (request for data) may return query results (the data returned as a result of the request for data) which can vary in size. Theoretically, the query results could approach the size of the originating database or may be only a single instance of row data with the appropriate attributes or columns of the search criteria. One problem with such queries is that a user has difficulty in making boundary assumptions on the maximum amount of memory needed to store data for display. As a consequence, systems today maintain all of the returned search data on computer disk in a temporary storage file. This requires fast de-serialization of objects for subsequent display in a grid when the user changes his view or the window size changes.
Waiting for all data of a query search to be read and formatted often results in a delay for the user display. Additionally, each time the user moves within the display grid, another long delay is possible while formatted data is accessed in full for a display change. It would be advantageous if the temporary storage file size need not be estimated and if a faster method of updating the user display were provided. Also, since application-specific formatting may be desired, it is desirable to allow the display of grid data to be easily customized to suit the application utilizing a grid.
Additionally, the formatted data in display on the grid may not be organized for optimal utility by the user. A user may wish to sort the columns of the displayed data. This sorting action may result in further delays as the data usually must be fully consumed by the application and processed into the new organization before the display is updated for the user. Depending on the size of the effort, the speed of the processor, and the efficiency of the application, significant user delays may occur.
The above mentioned limitations and the corresponding desires for overcoming those limitations demonstrate the need and utility for the current invention.